home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / lib / tclX-6.4 / TclInit.tcl < prev    next >
Encoding:
Text File  |  1992-12-17  |  2.8 KB  |  105 lines

  1. #-----------------------------------------------------------------------------
  2. # TclInit.tcl -- Extended Tcl initialization.
  3. #-----------------------------------------------------------------------------
  4. # $Id: TclInit.tcl,v 2.0 1992/10/16 04:51:37 markd Rel $
  5. #-----------------------------------------------------------------------------
  6.  
  7. global env TCLENV
  8. set TCLENV(inUnknown) 0
  9.  
  10. #
  11. # Unknown command trap handler.
  12. #
  13. proc unknown {cmdName args} {
  14.     global TCLENV
  15.     if $TCLENV(inUnknown) {
  16.         error "recursive unknown command trap: \"$cmdName\""}
  17.     set TCLENV(inUnknown) 1
  18.     
  19.     set stat [catch {demand_load $cmdName} ret]
  20.     if {$stat == 0 && $ret} {
  21.         set TCLENV(inUnknown) 0
  22.         return [uplevel 1 [list eval $cmdName $args]]
  23.     }
  24.  
  25.     if {$stat != 0} {
  26.         global errorInfo errorCode
  27.         set TCLENV(inUnknown) 0
  28.         error $ret $errorInfo $errorCode
  29.     }
  30.  
  31.     global env interactiveSession noAutoExec
  32.  
  33.     if {$interactiveSession && ([info level] == 1) && ([info script] == "") &&
  34.             (!([info exists noAutoExec] && [set noAutoExec]))} {
  35.         if {[file rootname $cmdName] == "$cmdName"} {
  36.             if [info exists env(PATH)] {
  37.                 set binpath [searchpath [split $env(PATH) :] $cmdName]
  38.             } else {
  39.                 set binpath [searchpath "." $cmdName]
  40.             }
  41.         } else {
  42.             set binpath $cmdName
  43.         }
  44.         if {[file executable $binpath]} {
  45.             set TCLENV(inUnknown) 0
  46.             uplevel 1 [list system [concat $cmdName $args]]
  47.             return
  48.         }
  49.     }
  50.     set TCLENV(inUnknown) 0
  51.     error "invalid command name: \"$cmdName\""
  52. }
  53.  
  54. #
  55. # Search a path list for a file. (catch is for bad ~user)
  56. #
  57. proc searchpath {pathlist file} {
  58.     foreach dir $pathlist {
  59.         if {$dir == ""} {set dir .}
  60.         if {[catch {file exists $dir/$file} result] == 0 && $result}  {
  61.             return $dir/$file
  62.         }
  63.     }
  64.     return {}
  65. }
  66.  
  67. #
  68. # Define a proc to be available for demand_load.
  69. #
  70. proc autoload {filenam args} {
  71.     global TCLENV
  72.     foreach i $args {
  73.         set TCLENV(PROC:$i) [list F $filenam]
  74.     }
  75. }
  76.  
  77. #
  78. # Search TCLPATH for a file to source.
  79. #
  80. proc load {name} {
  81.     global TCLPATH errorCode
  82.     if {[string first / $name] >= 0} {
  83.         return  [uplevel #0 source $name]
  84.     }
  85.     set where [searchpath $TCLPATH $name]
  86.     if [lempty $where] {
  87.         error "couldn't find $name in Tcl search path" "" "TCLSH FILE_NOT_FOUND"
  88.     }
  89.     uplevel #0 source $where
  90. }
  91.  
  92. autoload buildidx.tcl buildpackageindex
  93.  
  94. # == Put any code you want all Tcl programs to include here. ==
  95.  
  96. if !$interactiveSession return
  97.  
  98. # == Interactive Tcl session initialization ==
  99.  
  100. set TCLENV(topLevelPromptHook) {global programName; concat "$programName>" }
  101. set TCLENV(downLevelPromptHook) {concat "=>"}
  102.  
  103. if [file readable ~/.tclrc] {source ~/.tclrc}
  104.  
  105.